
// 提示框
function noticeDiv(text, type, time, fn) {
	if (!time) time = 2000;
	if (!type) type = 'info';
	if (!fn) fn = function () { };
	var num = $('#noticeUlC .noticeDiv').length;
	var tem = `<div class="noticeDiv ${type}" id="noticeDiv">
		<span class="noticeDiv_icon" style="background-image:url(../public/img/index/other/${type}.png)"></span>
					<div class="noticeDiv_title ${type}">${text}</div>
		</div>`;
	var temUl = `<div class="noticeUl"><div class="noticeUlC" id="noticeUlC"></div></div>`
	if (!num || num == 0) {
		num = 0;
		$('body').append(temUl);
	}
	$('#noticeUlC').prepend(tem);

	if (num >= 3) {
		$('#noticeUlC .noticeDiv').eq(3).animate({'opacity':0,'top':0},100,function(){
			$(this).remove();fn();
		 });
		clearTimeout($('#noticeUlC .noticeDiv').eq(3).timer);
	}

	$('#noticeUlC .noticeDiv').each(function(index, item){
		$(this).animate({'opacity':1,'top':100+50*index},100);
		$(this).timer = setTimeout(()=>{
			$(this).animate({'opacity':0,'top':0},100,function(){
				$(this).remove();fn();
				if($('#noticeUlC .noticeDiv').length==0) $('.noticeUl').remove();
			});
		},time);
	})
	
}

function getClass(oParent, aClass) {　
	var aEle = document.getElementsByTagName('*');　　   
	var result = [];　　　　　　　　　　　　　　　　　　　　  
	for (var i = 0; i < aEle.length; i++) {　　　　　　　　　　　  
		if (aEle[i].className == aClass) {　　　　　　　　  
			result.push(aEle[i])　　　　　　　　　　　　　   
		}
	}
	return result;　　　　　　　　　　　　　　　　　　　　   
}

//获取地址栏参数对象
function getUrlParams() {
	var url = location.search;
	var params = {}
	if (url.indexOf("?") != -1) {
		var str = url.substr(1);

		var arr = str.split("&");

		for (var i = 0; i < arr.length; i++) {
			params[arr[i].split("=")[0]] = arr[i].split("=")[1];
		}
	}
	return params;
}

// 获取地址栏参数对象（中文参数）
function getQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	var r = window.location.search.substr(1).match(reg);
	if (r != null) {
		return decodeURI(r[2]);
	} else {
		return null;
	}
}

// 获取路径地址(暂时) 不能存储
function getObjectURL(file) {
	var url = null;
	if (window.createObjcectURL != undefined) {
		url = window.createOjcectURL(file);
	} else if (window.URL != undefined) {
		url = window.URL.createObjectURL(file);
	} else if (window.webkitURL != undefined) {
		url = window.webkitURL.createObjectURL(file);
	}
	return url;
}

// 存储路径地址(永久) 太大上传不了
function setFilePath(file, obj1, obj2) {
	if (window.FileReader) {
		var reader = new FileReader();
		reader.readAsDataURL(file);
		//监听文件读取结束后事件    
		reader.onloadend = (e) => {
			var url = e.target.result;
			$(obj1).attr('src', url);
			$(obj2).val(url);
		}
	}
}

// 获取类名
function getClass(classname) {
	// 浏览器支持的情况下
	if (document.getElementsByClassName) {
		return document.getElementsByClassName(classname);
	}

	// 不支持的情况下
	var arr = [];//用来存放符合类名条件的元素
	var demo = document.getElementsByTagName("*");//获取所有的标签
	//遍历所有的标签
	for (var i = 0; i < demo.length; i++) {
		//每次遍历都把有类名的存放到arrtxt中，如果是多个类名就分割一下
		var arrtxt = demo[i].className.split(" ");
		// 对分割后的类名进行遍历，判断类名是否与传过来的类名相同，如果相同则把
		有该类名的元素存到数组中
		for (var j = 0; j < arrtxt.length; j++) {
			if (arrtxt[j] == classname) {
				arr.push(demo[i]);//一定是存放元素而不是存放类名，因为我们是通过类名来找元素的。

			}
		}

	}
	return arr;//返回的是带有classname的元素，而classname可能有很多个元素都有。
}






//js完美运动框架
//函数(对象，{style1:目标值1, style2:目标值2}, 运动时间, 结束运动后的函数)
function startMove(obj, json, time, fn) {
	clearInterval(obj.iTimer);  //先关闭定时器
	var iCur = 0;				//先var一个iCur变量值，即style变化为的值，变化值              
	var iSpeed = 0;             //再var一个iSpeed变量值，即style变化的速度值，变速值
	obj.iTimer = setInterval(function () //再开一个自身的定时器
	{
		var iBtn = true;        //打开一个开关，给这个开关一个true的值
		for (var attr in json)   //for循环，依次将json数组中的style值遍历
		{
			var iTarget = json[attr];  //将目标值赋给iTarget
			if (attr == 'opacity')      //如果style值是opacity值
			{
				iCur = Math.round(css(obj, 'opacity') * 100);// 先将css()函数获取style值赋给iCur变化值，再将其先*100，然后四舍五入取整
			}
			else                       //如果style值是其他的呢
			{
				iCur = parseInt(css(obj, attr));//先将css()函数获取style值赋给iCur变化值，再将其直接取整
			}
			iSpeed = (iTarget - iCur) / time; //将目标值和iCur变化值的差除以一个变量赋给iSpeed变速值，这个变量可是控制速度，time越大，变化时间就越长
			iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);//然后再用条件表达式，将变速值向上取整
			if (iCur != iTarget)  //如果变化值没有达到目标值时，达到了目标值就不进入这个判断语句中
			{
				iBtn = false; //将开关关掉，关不掉定时器，继续循环
				if (attr == 'opacity') //如果style值是opacity时
				{
					obj.style.opacity = (iCur + iSpeed) / 100;//变化对象的opacity值
					obj.style.filter = 'alpha(opacity=' + (iCur + iSpeed) + ')';//变化对象的filter值
				}
				else  				 //如果style值是其他的呢，像长宽，位置等等px的style值
				{
					obj.style[attr] = iCur + iSpeed + 'px'; //变化其style值
				}
			};
		};
		if (iBtn) //如果开关是true开着的，就执行语句
		{
			clearInterval(obj.iTimer); //关闭定时器
			fn && fn.call(obj); //执行fn函数
		}
	}, 60);
};

// 获取样式的方法
function css(obj, attr) {
	if (obj.currentStyle) {
		return obj.currentStyle[attr];
	}
	else {
		return getComputedStyle(obj, false)[attr];
	}
};

// 返回上一级并刷新
function toRrefresh() {
	//window.location.href=document.referrer;
	window.history.go(-1);
}


function sortChinese(arr) { // 参数： 排序的数组
	arr.sort(function (item1, item2) {
		return item1.localeCompare(item2, 'zh-CN');
	})
}

function sortChineseObj(arr, dataLeven) { // 参数：arr 排序的数组; dataLeven 数组内的需要比较的元素属性
	/* 获取数组元素内需要比较的值 */
	function getValue(option) { // 参数： option 数组元素
		if (!dataLeven) return option
		var data = option
		dataLeven.split('.').filter(function (item) {
			data = data[item]
		})
		return data + ''
	}
	arr.sort(function (item1, item2) {
		return getValue(item1).localeCompare(getValue(item2), 'zh-CN');
	})
}

// 单值 排序
function oneSortBy() {
	return function (a, b) {
		return a - b;
	}
}

// 字母排序
function acronymSortBy() {
	return function (a, b) {
		if (a.toString().toLowerCase() > b.toString().toLowerCase())
			return 1;
		return -1;
	}
}


// 方法区域
// 时间排序
function timeSortBy(field1) {
	return function (a, b) {
		var a = a[field1].split(':');
		var b = b[field1].split(':');
		if (a[0] == b[0]) {
			return a[1] - b[1];
		} else {
			return a[0] - b[0];
		}
	}
}
// 单值 + 名称排序
function valueSortBy(field1, field2) {
	return function (a, b) {
		if (a[field1] == b[field1]) {
			return a[field2] - b[field2];
		} else {
			return a[field1] - b[field1];
		}
	}
}

// 年月日+名称排序
function dateSortBy(field1, field2, field3, field4) {
	return function (a, b) {
		if (a[field1] == b[field1]) {
			if (a[field2] == b[field2]) {
				if (a[field3] == b[field3]) {
					return a[field4] - b[field4];
				} else { return a[field3] - b[field3]; }
			} else { return a[field2] - b[field2]; }
		} else { return a[field1] - b[field1]; }
	}
}



// 补零
function addZero(num) {
	if (num < 10) return `0${num}`;
	else return num;
}

// 取下求整
function floor(num) {
	return Math.floor(num);
}






